package task

import (
	"fmt"
	"singo/model"
	"singo/util"
	"time"
)

// RunTimerTask 开启定时任务
func RunTimerTask() {
	// 月底定时任务结算（每秒）
	// 1.获取当前月份未核查的所有任务
	// 2.当前时间是否 == 传入的月底时间
	// 3.任务是否完成
	// 未完成：修改任务详情，0分、已核查
	// 已完成：修改任务详情，0.9、已核查
	ticker := time.NewTicker(time.Second * 1)
	for range ticker.C {

		d := time.Now()
		start_time := util.GetFirstDateOfMonth(d, false).Format("2006-01-02 15:04:05")
		end_time := util.GetLastDateOfMonth(d).Format("2006-01-02 15:04:05")
		now := d.Format("2006-01-02 15:04:05")

		// 时间测试
		// end_time := "2021-04-12 14:33:00"
		// now := time.Date(d.Year(), d.Month(), d.Day(), d.Hour(), d.Minute(), d.Second(), 0, d.Location()).Format("2006-01-02 15:04:05")
		// fmt.Println("now: ", now)

		if now == end_time {
			fmt.Println("定时任务执行", now, start_time, end_time)
			tasks := []model.Task{}
			model.DB.Where("deadline_at BETWEEN ? AND ? AND review_status = ?", start_time, end_time, 0).Find(&tasks)
			for _, task := range tasks {
				if task.Status != 3 {
					model.DB.Model(&model.Task{}).Where("uid = ?", task.UID).Updates(map[string]interface{}{"score": 0, "review_status": 1})
				} else {
					model.DB.Model(&model.Task{}).Where("uid = ?", task.UID).Updates(map[string]interface{}{"score": 0.9, "review_status": 1})
				}
			}
		}
	}
}
